home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgLangD.iso / Borland Visual dBASE Professiona v7.0 / DATA1.CAB / Sample_dBASE / Fish.wfm < prev    next >
Text File  |  1997-11-20  |  18KB  |  729 lines

  1. //--------------------------------------------------------------
  2. //
  3. //  Fish.wfm --  Fish of the World 
  4. //
  5. //  This SDI data entry form demonstrates how to call 
  6. //  rowset methods from VCR style navigation buttons 
  7. //  and popup menu options.
  8. //
  9. //  Dependencies: FISH.DBF
  10. //                SHORE.JPG
  11. //                Visual Speller ActiveX
  12. //
  13. //  Visual dBASE Samples Group
  14. //
  15. //  $Revision:   1.20  $
  16. //
  17. //  Copyright (c) 1997, Borland International, Inc. 
  18. //  All rights reserved.
  19. //
  20. //---------------------------------------------------------------
  21. set talk off
  22. set ldCheck off
  23. ** END HEADER -- do not remove this line
  24. //
  25. // Generated on 11/01/97
  26. //
  27. parameter bModal
  28. local f
  29. f = new FISHFORM()
  30. if (bModal)
  31.    f.mdi = false // ensure not MDI
  32.    f.readModal()
  33. else
  34.    f.open()
  35. endif
  36.  
  37. class FISHFORM of FORM
  38.    with (this)
  39.       onClose = class::FORM_ONCLOSE
  40.       open = class::FORM_OPEN
  41.       readmodal = class::FORM_READMODAL
  42.       scaleFontSize = 8
  43.       scaleFontBold = false
  44.       height = 17.4
  45.       left = 10
  46.       top = 0
  47.       width = 79.3333
  48.       text = "Visual FishBase 2.0"
  49.       background = 'filename "shore.jpg"'
  50.       autoCenter = true
  51.       mdi = false
  52.    endwith
  53.  
  54.  
  55.    this.SESSIONFISH = new SESSION()
  56.    this.SESSIONFISH.parent = this
  57.    with (this.SESSIONFISH)
  58.       left = 0
  59.       top = 0
  60.       lockRetryInterval = 0
  61.    endwith
  62.  
  63.  
  64.    this.VDBSAMPLE1 = new DATABASE()
  65.    this.VDBSAMPLE1.parent = this
  66.    with (this.VDBSAMPLE1)
  67.       left = 4
  68.       top = 0
  69.       databaseName = "VDBSAMPLE"
  70.       session = form.SESSIONFISH
  71.       active = true
  72.    endwith
  73.  
  74.  
  75.    this.FISH1 = new QUERY()
  76.    this.FISH1.parent = this
  77.    with (this.FISH1)
  78.       left = 8
  79.       top = 0
  80.       database = form.vdbsample1
  81.       sql = 'SELECT ID, Name, Species, Fish."Length CM", Description, Fish."OLE Graphic" from "fish.dbf" Fish'
  82.       active = true
  83.    endwith
  84.  
  85.    this.ENTRYID = new ENTRYFIELD(this)
  86.    with (this.ENTRYID)
  87.       enabled = false
  88.       height = 1
  89.       left = 41
  90.       top = 3
  91.       width = 9.5
  92.       metric = 0
  93.       dataLink = form.fish1.rowset.fields["ID"]
  94.       picture = "99999999"
  95.       colorHighLight = ""
  96.       fontName = "MS Sans Serif"
  97.       fontSize = 8
  98.       validRequired = true
  99.       borderStyle = 7
  100.    endwith
  101.  
  102.  
  103.    this.ENTRYNAME = new ENTRYFIELD(this)
  104.    with (this.ENTRYNAME)
  105.       height = 1
  106.       left = 41
  107.       top = 4
  108.       width = 30
  109.       metric = 0
  110.       dataLink = form.fish1.rowset.fields["Name"]
  111.       colorHighLight = ""
  112.       fontName = "MS Sans Serif"
  113.       fontSize = 8
  114.       validRequired = true
  115.       borderStyle = 7
  116.    endwith
  117.  
  118.  
  119.    this.ENTRYSPECIES = new ENTRYFIELD(this)
  120.    with (this.ENTRYSPECIES)
  121.       height = 1
  122.       left = 41
  123.       top = 5
  124.       width = 30
  125.       metric = 0
  126.       dataLink = form.fish1.rowset.fields["Species"]
  127.       colorHighLight = ""
  128.       fontName = "MS Sans Serif"
  129.       fontSize = 8
  130.       validRequired = true
  131.       borderStyle = 7
  132.    endwith
  133.  
  134.  
  135.    this.SPIN_CM = new SPINBOX(this)
  136.    with (this.SPIN_CM)
  137.       onChange = class::SPIN_CM_ONCHANGE
  138.       height = 1
  139.       left = 41
  140.       top = 6
  141.       width = 10
  142.       metric = 0
  143.       dataLink = form.fish1.rowset.fields["Length CM"]
  144.       picture = "999.99"
  145.       colorHighLight = ""
  146.       fontName = "MS Sans Serif"
  147.       fontSize = 8
  148.       validRequired = true
  149.    endwith
  150.  
  151.  
  152.    this.SPIN_INCHES = new SPINBOX(this)
  153.    with (this.SPIN_INCHES)
  154.       onChange = class::SPIN_INCHES_ONCHANGE
  155.       height = 1
  156.       left = 58
  157.       top = 6
  158.       width = 10
  159.       metric = 0
  160.       picture = "999.99"
  161.       colorHighLight = ""
  162.       rangeMax = 100
  163.       rangeMin = 1
  164.       fontName = "MS Sans Serif"
  165.       fontSize = 8
  166.       value = 1
  167.       validRequired = true
  168.       borderStyle = 7
  169.    endwith
  170.  
  171.  
  172.    this.BOOKFISH = new NOTEBOOK(this)
  173.    with (this.BOOKFISH)
  174.       onOpen = {; this.cursel := 1}
  175.       height = 9
  176.       left = 28
  177.       top = 7.5
  178.       width = 50
  179.       metric = 0
  180.       colorNormal = "BtnFace"
  181.       fontName = "MS Sans Serif"
  182.       fontSize = 8
  183.       dataSource = 'ARRAY {"OLE Graphic","Description"}'
  184.       borderStyle = 5
  185.    endwith
  186.  
  187.  
  188.    this.BOOKFISH.EDITORDESC = new EDITOR(this.BOOKFISH)
  189.    with (this.BOOKFISH.EDITORDESC)
  190.       height = 6.75
  191.       left = 1
  192.       top = 1.4
  193.       width = 46.5
  194.       metric = 0
  195.       fontName = "MS Sans Serif"
  196.       fontSize = 8
  197.       dataLink = parent.parent.fish1.rowset.fields["Description"]
  198.       cuaTab = true
  199.       pageno = 2
  200.       popupEnable = false
  201.    endwith
  202.  
  203.  
  204.    this.BOOKFISH.OLEGRAPHIC = new OLE(this.BOOKFISH)
  205.    with (this.BOOKFISH.OLEGRAPHIC)
  206.       height = 6.8
  207.       left = 7
  208.       top = 1.3
  209.       width = 34
  210.       metric = 0
  211.       dataLink = parent.parent.fish1.rowset.fields["OLE Graphic"]
  212.       border = false
  213.    endwith
  214.  
  215.  
  216.    this.SPEEDADD = new PUSHBUTTON(this)
  217.    with (this.SPEEDADD)
  218.       onClick = {||class::rowAdd( this.form )}
  219.       height = 1.5
  220.       left = 4
  221.       top = 3.5
  222.       width = 5
  223.       text = " "
  224.       metric = 0
  225.       speedBar = true
  226.       upBitmap = "RESOURCE:2 PS_APPEND"
  227.       fontSize = 8
  228.       speedTip = "Add Fish"
  229.       group = true
  230.       colorNormal = "BtnText/BtnFace"
  231.       value = false
  232.    endwith
  233.  
  234.  
  235.    this.SPEEDDELETE = new PUSHBUTTON(this)
  236.    with (this.SPEEDDELETE)
  237.       onClick = {||class::rowDelete( this.form )}
  238.       height = 1.5
  239.       left = 10
  240.       top = 3.5
  241.       width = 5
  242.       text = " "
  243.       metric = 0
  244.       speedBar = true
  245.       upBitmap = "RESOURCE:2 PS_DELETE"
  246.       fontSize = 8
  247.       speedTip = "Delete Fish"
  248.       group = true
  249.       colorNormal = "BtnText/BtnFace"
  250.       value = false
  251.    endwith
  252.  
  253.  
  254.    this.SPEEDSAVE = new PUSHBUTTON(this)
  255.    with (this.SPEEDSAVE)
  256.       onClick = {||class::rowSave( this.form )}
  257.       height = 1.5
  258.       left = 4
  259.       top = 5.5
  260.       width = 5
  261.       text = " "
  262.       metric = 0
  263.       upBitmap = "RESOURCE:2 PS_SAVE"
  264.       fontSize = 8
  265.       speedTip = "Save Fish"
  266.       group = true
  267.       colorNormal = "BtnText/BtnFace"
  268.       value = false
  269.    endwith
  270.  
  271.  
  272.    this.SPEEDABANDON = new PUSHBUTTON(this)
  273.    with (this.SPEEDABANDON)
  274.       onClick = {||class::rowAbandon( this.form )}
  275.       height = 1.5
  276.       left = 10
  277.       top = 5.5
  278.       width = 5
  279.       text = " "
  280.       metric = 0
  281.       upBitmap = "RESOURCE:2 PS_ABANDON"
  282.       fontSize = 8
  283.       speedTip = "Abandon Changes"
  284.       group = true
  285.       colorNormal = "BtnText/BtnFace"
  286.       value = false
  287.    endwith
  288.  
  289.  
  290.    this.SPEEDFIND = new PUSHBUTTON(this)
  291.    with (this.SPEEDFIND)
  292.       onClick = class::SPEEDFIND_ONCLICK
  293.       height = 1.5
  294.       left = 4
  295.       top = 7.5
  296.       width = 5
  297.       text = " "
  298.       metric = 0
  299.       speedBar = true
  300.       upBitmap = "RESOURCE:2 PS_LOCATE"
  301.       fontSize = 8
  302.       speedTip = "Find Fish"
  303.       group = true
  304.       colorNormal = "BtnText/BtnFace"
  305.       value = false
  306.    endwith
  307.  
  308.  
  309.    this.SPEEDFIRST = new PUSHBUTTON(this)
  310.    with (this.SPEEDFIRST)
  311.       onClick = {||class::goFirst(this.form)}
  312.       enabled = false
  313.       height = 1.5
  314.       left = 4
  315.       top = 9.5
  316.       width = 5
  317.       text = " "
  318.       metric = 0
  319.       speedBar = true
  320.       upBitmap = "RESOURCE:2 PS_FIRST"
  321.       fontSize = 8
  322.       speedTip = "First Fish"
  323.       group = true
  324.       colorNormal = "BtnText/BtnFace"
  325.       value = false
  326.    endwith
  327.  
  328.  
  329.    this.SPEEDPREV = new PUSHBUTTON(this)
  330.    with (this.SPEEDPREV)
  331.       onClick = {||this.form.goPrev( this.form )}
  332.       enabled = false
  333.       height = 1.5
  334.       left = 10
  335.       top = 9.5
  336.       width = 5
  337.       text = " "
  338.       metric = 0
  339.       speedBar = true
  340.       upBitmap = "RESOURCE:2 PS_PREV"
  341.       fontSize = 8
  342.       speedTip = "Previous Fish"
  343.       group = true
  344.       colorNormal = "BtnText/BtnFace"
  345.       value = false
  346.    endwith
  347.  
  348.  
  349.    this.SPEEDNEXT = new PUSHBUTTON(this)
  350.    with (this.SPEEDNEXT)
  351.       onClick = {||this.form.goNext( this.form )}
  352.       height = 1.5
  353.       left = 4
  354.       top = 11.5
  355.       width = 5
  356.       text = " "
  357.       metric = 0
  358.       speedBar = true
  359.       upBitmap = "RESOURCE:2 PS_NEXT"
  360.       fontSize = 8
  361.       speedTip = "Next Fish"
  362.       group = true
  363.       colorNormal = "BtnText/BtnFace"
  364.       value = false
  365.    endwith
  366.  
  367.  
  368.    this.SPEEDLAST = new PUSHBUTTON(this)
  369.    with (this.SPEEDLAST)
  370.       onClick = {||this.form.goLast( this.form )}
  371.       height = 1.5
  372.       left = 10
  373.       top = 11.5
  374.       width = 5
  375.       text = " "
  376.       metric = 0
  377.       speedBar = true
  378.       upBitmap = "RESOURCE:2 PS_LAST"
  379.       fontSize = 8
  380.       speedTip = "Last Fish"
  381.       group = true
  382.       colorNormal = "BtnText/BtnFace"
  383.       value = false
  384.    endwith
  385.  
  386.  
  387.    this.SPEEDSPELL = new PUSHBUTTON(this)
  388.    with (this.SPEEDSPELL)
  389.       onClick = class::SPEEDSPELL_ONCLICK
  390.       height = 1.5
  391.       left = 4
  392.       top = 13.5
  393.       width = 5
  394.       text = " "
  395.       metric = 0
  396.       speedBar = true
  397.       upBitmap = "RESOURCE #36"
  398.       fontSize = 8
  399.       speedTip = "Check Spelling"
  400.       group = true
  401.       colorNormal = "BtnText/BtnFace"
  402.       value = false
  403.    endwith
  404.  
  405.  
  406.    this.LABELID = new TEXT(this)
  407.    with (this.LABELID)
  408.       height = 1
  409.       left = 29
  410.       top = 3
  411.       width = 11
  412.       metric = 0
  413.       colorNormal = "BtnText"
  414.       alignVertical = 1
  415.       transparent = true
  416.       fontName = "MS Sans Serif"
  417.       fontSize = 8
  418.       fontBold = true
  419.       text = "Fish ID:"
  420.    endwith
  421.  
  422.  
  423.    this.LABELCOMMONNAME = new TEXT(this)
  424.    with (this.LABELCOMMONNAME)
  425.       height = 1
  426.       left = 29
  427.       top = 4
  428.       width = 11
  429.       metric = 0
  430.       colorNormal = "BtnText"
  431.       alignVertical = 1
  432.       transparent = true
  433.       fontName = "MS Sans Serif"
  434.       fontSize = 8
  435.       fontBold = true
  436.       text = "Name:"
  437.    endwith
  438.  
  439.  
  440.    this.LABELSPECIES = new TEXT(this)
  441.    with (this.LABELSPECIES)
  442.       height = 1
  443.       left = 29
  444.       top = 5
  445.       width = 11
  446.       metric = 0
  447.       colorNormal = "BtnText"
  448.       alignVertical = 1
  449.       transparent = true
  450.       fontName = "MS Sans Serif"
  451.       fontSize = 8
  452.       fontBold = true
  453.       text = "Species:"
  454.    endwith
  455.  
  456.  
  457.    this.LABELLENGTH = new TEXT(this)
  458.    with (this.LABELLENGTH)
  459.       height = 1
  460.       left = 29
  461.       top = 6
  462.       width = 11
  463.       metric = 0
  464.       colorNormal = "BtnText"
  465.       alignVertical = 1
  466.       transparent = true
  467.       fontName = "MS Sans Serif"
  468.       fontSize = 8
  469.       fontBold = true
  470.       text = "Length:"
  471.    endwith
  472.  
  473.  
  474.    this.LABELCM = new TEXT(this)
  475.    with (this.LABELCM)
  476.       height = 1
  477.       left = 52
  478.       top = 6
  479.       width = 4
  480.       metric = 0
  481.       colorNormal = "BtnText"
  482.       alignVertical = 1
  483.       transparent = true
  484.       fontName = "MS Sans Serif"
  485.       fontSize = 8
  486.       fontBold = true
  487.       text = "CM"
  488.    endwith
  489.  
  490.  
  491.    this.LABELINCHES = new TEXT(this)
  492.    with (this.LABELINCHES)
  493.       height = 1
  494.       left = 69
  495.       top = 6
  496.       width = 10
  497.       metric = 0
  498.       colorNormal = "BtnText"
  499.       alignVertical = 1
  500.       transparent = true
  501.       fontName = "MS Sans Serif"
  502.       fontSize = 8
  503.       fontBold = true
  504.       text = "Inches"
  505.    endwith
  506.  
  507.  
  508.    this.VSPELL1 = new ACTIVEX(this)
  509.    with (this.VSPELL1)
  510.       height = 1
  511.       left = -10
  512.       top = 0.5
  513.       width = 4
  514.       metric = 0
  515.       license = ""
  516.       state = ""
  517.       classId = ""
  518.    endwith
  519.  
  520.  
  521.  
  522.  
  523.    this.TITLETEXT = new TEXT(this)
  524.    with (this.TITLETEXT)
  525.       height = 1.85
  526.       left = 25
  527.       top = 0.4737
  528.       width = 53
  529.       metric = 0
  530.       colorNormal = "BtnText"
  531.       alignVertical = 1
  532.       alignHorizontal = 1
  533.       transparent = true
  534.       fontSize = 12
  535.       text = "<H1>Fish of the World</H1>"
  536.    endwith
  537.  
  538.  
  539.    this.rowset = this.fish1.rowset
  540.  
  541.    function goFirst( thisForm )
  542.       thisForm.rowset.first()
  543.       class::setNavOptions( thisForm )
  544.    return ( not thisForm.rowset.endOfSet )
  545.  
  546.    function setNavOptions( thisForm )
  547.       local bFirst, bLast
  548.       bFirst = thisForm.rowset.atFirst()
  549.       bLast  = thisForm.rowset.atLast()
  550.       with ( thisForm )
  551.          SPEEDFIRST.enabled := ( not bFirst )
  552.          SPEEDPREV.enabled  := ( not bFirst )
  553.          SPEEDNEXT.enabled  := ( not bLast )
  554.          SPEEDLAST.enabled  := ( not bLast )
  555.       endwith
  556.       with ( thisForm.shortcut )
  557.          popFIRST.enabled := ( not bFirst )
  558.          popPREV.enabled  := ( not bFirst )
  559.          popNEXT.enabled  := ( not bLast )
  560.          popLAST.enabled  := ( not bLast )
  561.       endwith
  562.       class::refreshInches( thisForm )
  563.    return 
  564.  
  565.    function goLast( thisForm )
  566.       thisForm.rowset.last()
  567.       class::setNavOptions( thisForm )
  568.    return ( not thisForm.rowset.endOfSet )
  569.  
  570.    function goNext( thisForm )        
  571.       thisForm.rowset.next(1)    
  572.       if ( thisForm.rowset.endOfSet )
  573.          thisForm.rowset.next(-1)
  574.       endif
  575.       class::setNavOptions( thisForm )
  576.    return ( not thisForm.rowset.endOfSet )
  577.  
  578.    function goPrev( thisForm )
  579.       thisForm.rowset.next(-1)
  580.       if ( thisForm.rowset.endOfSet )
  581.          thisForm.rowset.next(1)
  582.       endif
  583.       class::setNavOptions( thisForm )
  584.    return ( not thisForm.rowset.endOfSet )
  585.  
  586.    // {Linked Method} form.onClose
  587.    function Form_OnClose
  588.       with ( this )
  589.          SPIN_INCHES.onChange := null
  590.          SPIN_CM.onChange := null
  591.       endwith   
  592.       CLOSE PROCEDURE fish.pop
  593.    return true
  594.  
  595.    // {Linked Method} form.open
  596.    function form_open
  597.       class::form_prepare()
  598.    return ( FISHFORM::open() )
  599.  
  600.    // {Linked Method} form.readmodal
  601.    function form_readModal()
  602.       class::form_prepare()
  603.    return ( FISHFORM::readModal() )
  604.  
  605.    function form_prepare
  606.       SET PROCEDURE TO "fish.pop" ADDITIVE
  607.       this.popupMenu = new fishPopup(this,"SHORTCUT")
  608.       
  609.       this.SPIN_INCHES.value := (this.SPIN_CM.value / 2.54)
  610.  
  611.       // If NT try to load visual speller. 
  612.       if ( "NT" $ OS() )
  613.          this.VSPELL1.classID := "{97F4CED0-9103-11CE-8385-524153480001}"
  614.       endif
  615.  
  616.       // Hide spell check button if activeX not present
  617.       this.speedSpell.visible := ;
  618.          ( TYPE("this.VSPELL1.nativeObject.standardDictionary") == "C" )
  619.    return( this.speedSpell.visible )
  620.  
  621.    function refreshInches ( thisForm )
  622.       thisForm.SPIN_INCHES.value := ( thisForm.SPIN_CM.value / 2.54)
  623.    return ( thisForm.SPIN_INCHES.value )  
  624.  
  625.    function rowAbandon ( thisForm )
  626.       local bAbandon
  627.       bAbandon = false
  628.       if ( thisForm.rowset.state == 5 )
  629.          bAbandon := thisForm.rowset.abandon()
  630.          class::toggleFind( false )
  631.       else
  632.          bAbandon := thisForm.rowset.abandon()
  633.       endif    
  634.    return ( bAbandon )
  635.  
  636.    function rowSave( thisForm )
  637.    return ( thisForm.rowset.save() )
  638.  
  639.    function rowAdd( thisForm )
  640.    return ( thisForm.rowset.beginAppend() )
  641.  
  642.    function rowDelete( thisForm )
  643.       local bDelete
  644.       bDelete = false
  645.       if ( MSGBOX("You are about to delete the current fish." ;
  646.                 + CHR(13) ;
  647.                 + "Click Yes to delete the current fish.", ;
  648.                   "Visual FishBase", ;
  649.                   4) == 6 )
  650.          bDelete := thisForm.rowset.delete()
  651.          class::goPrev( thisForm )
  652.       endif
  653.       thisForm.setFocus()
  654.    return ( bDelete )
  655.  
  656.    // {Linked Method} form.speedfind.onClick
  657.    function SPEEDFIND_OnClick
  658.       local bFound
  659.       bFound = false
  660.       if ( this.form.rowset.state == 5 )
  661.          this.form.spin_inches.enabled := true
  662.          bFound := this.form.rowset.applyLocate()
  663.          if ( not bFound )
  664.             this.form.rowset.first()
  665.             MSGBOX("Fish not found.","Visual FishBase")
  666.             this.form.setFocus()
  667.          endif
  668.          class::toggleFind( false )
  669.          class::refreshInches( this.form )
  670.       else
  671.          with ( this.form.spin_inches )
  672.             value   := null
  673.             enabled := false
  674.          endwith
  675.          this.form.rowset.beginLocate()
  676.          class::toggleFind( true )
  677.       endif
  678.    return ( bFound )
  679.  
  680.    function toggleFind( bFind )        
  681.       if ( bFind )
  682.          this.form.SPEEDFIND.upBitmap := "RESOURCE:2 PS_RUN"
  683.       else
  684.          this.form.SPEEDFIND.upBitmap := "RESOURCE:2 PS_LOCATE"
  685.       endif
  686.       with ( this.form )
  687.          SPEEDADD.enabled     := ( NOT bFind )
  688.          SPEEDDELETE.enabled  := ( NOT bFind )
  689.          SPEEDABANDON.enabled := ( bFind )
  690.          SPEEDFIRST.enabled   := ( NOT bFind )
  691.          SPEEDPREV.enabled    := ( NOT bFind )
  692.          SPEEDNEXT.enabled    := ( NOT bFind )
  693.          SPEEDLAST.enabled    := ( NOT bFind )
  694.       endwith
  695.       with ( this.form.shortcut )
  696.          popADD.enabled     := ( NOT bFind )
  697.          popDELETE.enabled  := ( NOT bFind )
  698.          popABANDON.enabled := ( bFind )
  699.          popFIRST.enabled   := ( NOT bFind )
  700.          popPREV.enabled    := ( NOT bFind )
  701.          popNEXT.enabled    := ( NOT bFind )
  702.          popLAST.enabled    := ( NOT bFind )
  703.       endwith
  704.    return (bFind)
  705.  
  706.    // {Linked Method} form.speedspell.onClick
  707.    function SPEEDSPELL_OnClick
  708.       local eDesc, vSpell
  709.       eDesc  = this.form.bookfish.editorDesc
  710.       vSpell = this.form.VSpell1.nativeObject
  711.       this.form.bookfish.curSel := 2
  712.       eDesc.setFocus()
  713.       vSpell.clearCounts   := 1
  714.       vSpell.checkText     := eDesc.value // open spell dialog 
  715.       eDesc.datalink.value := vSpell.text
  716.       eDesc.datalink.parent.parent.refreshControls()      
  717.    return ( true )
  718.  
  719.    // {Linked Method} form.spin_cm.onChange
  720.    function SPIN_CM_OnChange
  721.       this.form.SPIN_INCHES.value = (this.value / 2.54)
  722.    return ( this.form.SPIN_INCHES.value )
  723.  
  724.    // {Linked Method} form.spin_inches.onChange
  725.    function SPIN_INCHES_OnChange
  726.       this.form.SPIN_CM.value = (this.value * 2.54)
  727.    return ( this.form.SPIN_CM.value )
  728. endclass
  729.